Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: migrate webRequest module to NetworkService (Part 5) #19714

Merged
merged 9 commits into from
Aug 13, 2019

Conversation

zcbenz
Copy link
Member

@zcbenz zcbenz commented Aug 11, 2019

Description of Change

Refs #15791.
Refs #19602.

This PR makes ProxyingURLLoaderFactory::InProgressRequest actually invoke the methods of webRequest module.

The next step would be actually invoking the listeners.

Release Notes

Notes: no-notes

@electron-cation electron-cation bot added the new-pr 🌱 PR opened in the last 24 hours label Aug 11, 2019
@zcbenz zcbenz requested a review from deepak1556 August 11, 2019 12:31
@electron-cation electron-cation bot removed the new-pr 🌱 PR opened in the last 24 hours label Aug 12, 2019
Copy link
Member

@deepak1556 deepak1556 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with some clarifications.

@@ -206,8 +206,10 @@ Session::Session(v8::Isolate* isolate, AtomBrowserContext* browser_context)
Session::~Session() {
content::BrowserContext::GetDownloadManager(browser_context())
->RemoveObserver(this);
// TODO(zcbenz): Now since URLRequestContextGetter is gone, is this still
// needed?
// Refs https://github.com/electron/electron/pull/12305.
DestroyGlobalHandle(isolate(), cookies_);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found this was needed to fix (D)CHECK in destruction order of IO thread when handles were held by UI thread from our modules. But now that they are handled by the network service, this ordering should be pretty much unnecessary. Would be good to check.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

api::Cookies and others are keeping strong references to BrowserContext and thus the headache of destructions, I think we can make them use weak reference (plain pointer) and things should be much simpler.

shell/browser/api/atom_api_web_request_ns.cc Outdated Show resolved Hide resolved
shell/browser/atom_browser_client.cc Show resolved Hide resolved
@zcbenz zcbenz force-pushed the ns-web-request-5 branch 2 times, most recently from 1bf1b88 to 0a8b1b9 Compare August 13, 2019 02:34
@zcbenz zcbenz merged commit 69eac0d into master Aug 13, 2019
@release-clerk
Copy link

release-clerk bot commented Aug 13, 2019

No Release Notes

@zcbenz zcbenz deleted the ns-web-request-5 branch August 13, 2019 05:47
@MarshallOfSound
Copy link
Member

/trop run backport-to 7-0-x

@trop
Copy link
Contributor

trop bot commented Aug 27, 2019

The backport process for this PR has been manually initiated,
sending your 1's and 0's to "7-0-x" here we go! :D

@trop
Copy link
Contributor

trop bot commented Aug 27, 2019

I was unable to backport this PR to "7-0-x" cleanly;
you will need to perform this backport manually.

deepak1556 pushed a commit that referenced this pull request Aug 27, 2019
* Pass WebRequest to ProxyingURLLoaderFactory

* Call WebRequestAPI in InProgressRequest

* Store the listeners

* Pass the request and response

* Add stub to handle the events

* Use extensions::WebRequestInfo

* Make sure webRequest is managed by Session

* chore: make creation of WebRequestNS more clear

* fix: check WebContents for service workers
jkleinsc pushed a commit that referenced this pull request Aug 27, 2019
* feat: associate InProgressRequest with requests (#19648)

* feat: migrate webRequest module to NetworkService (Part 4) (#19679)

* chore: use gin in WebRequest

* Add stubs for APIs

* feat: migrate webRequest module to NetworkService (Part 5) (#19714)

* Pass WebRequest to ProxyingURLLoaderFactory

* Call WebRequestAPI in InProgressRequest

* Store the listeners

* Pass the request and response

* Add stub to handle the events

* Use extensions::WebRequestInfo

* Make sure webRequest is managed by Session

* chore: make creation of WebRequestNS more clear

* fix: check WebContents for service workers

* feat: migrate webRequest module to NetworkService (Part 6) (#19752)

* Implement OnBeforeSendHeaders

* Pass the request

* Handle simple listeners

* Handle response listeners

* Read responses from listener

* feat: migrate webRequest module to NetworkService (Part 7) (#19820)

* fix: gin treats Function as Dictionary when doing convertions

* fix: check if listener exists

* fix: listener callback should be executed in next tick

* feat: make InProgressRequest work

* test: re-enable protocol test that relies on webRequest

* chore: merge conditions

* feat: migrate webRequest module to NetworkService (Part 8) (#19841)

* fix: fill uploadData property

* fix: requestHeaders in onBeforeSendHeaders

* fix: responseHeaders in onHeadersReceived

* fix: header keys should not be lowercased

* fix: gin::Dictionary::Get succeeds even though key does not exist...

* fix: throw for invalid filters

* test: re-enable api-web-request-spec

* chore: do not use deprecated base::Value API

* feat: migrate webRequest module to NetworkService (Part 9) (#19976)

* no need to get WebContents for URLLoaderFactory

* consult embedder for network_factory created in net module

* set disable_web_security to false

* re-enable webRequest tests in net module
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants